/*global pi */

pi.mod.define('pi.sysmod', function (pi) {
	"use strict";
		var module = {},
		vcalls = [
			// 获得指定名称的模块，模块的依赖模块优先在模块所在的目录下搜索，返回NULL表示失败，失败可查错误编号
			// return module.open(name)
			["pi_mod_open", pi.vcall.TYPE_INT, [pi.vcall.TYPE_STRING], "open"],

			// 在模块中获得指定名称的符号，返回NULL表示失败，失败可查错误编号
			// return module.symbol(mod, symbol)
			["pi_mod_symbol", pi.vcall.TYPE_INT, [pi.vcall.TYPE_INT, pi.vcall.TYPE_ANSI_STRING], "symbol"],
			// 获得模块的文件名，返回实际文件名的长度，0表示失败，失败可查错误编号
			// return module.name(mode, name, name_len);
			["pi_mod_name", pi.vcall.TYPE_UINT, [pi.vcall.TYPE_INT, pi.vcall.TYPE_STRING, pi.vcall.TYPE_UINT], "name"],
			
			// 关闭模块，返回成功或失败，失败可查错误编号
			// return module.close(mod);
			["pi_mod_close", pi.vcall.TYPE_BOOL, [pi.vcall.TYPE_INT], "close"]
		];

	// 注册所有 vcall 函数句柄
	pi.vcall.makeVCall("pi_lib.dll", module, vcalls);

	return module;
});